//package soulkun.library.component
//
//import androidx.annotation.NonNull
//import androidx.fragment.app.Fragment
//import androidx.fragment.app.FragmentActivity
//import androidx.fragment.app.FragmentManager
//import androidx.lifecycle.Lifecycle
//import androidx.viewpager2.adapter.FragmentStateAdapter
//import soulkun.library.utils.log.LogUtils
//import soulkun.library.utils.logE
//
///**
// * 修复无法动态增删以及可能出现过期fragment的问题
// * create时必须调用fragmentHashCodeList方法
// */
//abstract class BaseFragmentStateAdapter<T>: FragmentStateAdapter {
//
//    private val fragmentList = ArrayList<T>()
//    private val fragmentHashCodeList = ArrayList<Long>()
//
//    constructor(fragment: Fragment) : super(fragment)
//
//    constructor(fragmentActivity: FragmentActivity) : super(fragmentActivity)
//
//    constructor(fragmentManager: FragmentManager, lifecycle: Lifecycle) : super(fragmentManager, lifecycle)
//
//    constructor(initFragmentList: ArrayList<T>, fragment: Fragment) : super(fragment){
//        fragmentList.addAll(initFragmentList)
//    }
//
//    constructor(initFragmentList: ArrayList<T>, fragmentActivity: FragmentActivity) : super(fragmentActivity){
//        fragmentList.addAll(initFragmentList)
//    }
//
//    constructor(initFragmentList: ArrayList<T>, fragmentManager: FragmentManager, lifecycle: Lifecycle) : super(fragmentManager, lifecycle){
//        fragmentList.addAll(initFragmentList)
//    }
//
//    fun addFragmentList(fragment: T) {
//        fragmentList.add(fragment)
//    }
//
//    fun removeFragmentList(fragment: T) {
//        fragmentList.remove(fragment)
//    }
//
//    fun addFragmentHashCode(fragment: Fragment){
//        fragmentHashCodeList.add(fragment.hashCode().toLong())
//    }
//
//    fun removeFragmentHashCode(fragment: Fragment){
//        fragmentHashCodeList.remove(fragment.hashCode().toLong())
//    }
//
//    override fun getItemId(position: Int): Long {
//        return when {
//            fragmentList.size > 0 -> {
//                "getItemId".logE()
//                return fragmentList[position].hashCode().toLong()
//            }
//            else -> {
//                super.getItemId(position)
//            }
//        }
//    }
//
//    override fun containsItem(itemId: Long): Boolean {
//        return when {
//            fragmentHashCodeList.size > 0 -> {
//                fragmentHashCodeList.contains(itemId)
//            }
//            else -> {
//                super.containsItem(itemId)
//            }
//        }
//    }
//
//
//
//}